package com.sad.jetpack.v1.promise;

/**
 * 自定义异常，用于封装在 Promise 链的特定命名步骤中发生的错误。
 * 这样做可以实现更精确的错误处理和日志记录。
 */
public class PromiseStepException extends RuntimeException {

    /**
     * 发生错误的步骤名称。
     */
    private final String stepName;

    /**
     * 构造一个新的 PromiseStepException。
     *
     * @param stepName 发生错误的步骤的名称。该名称可以由用户定义，也可以自动生成。
     * @param cause    捕获到的原始异常。
     */
    public PromiseStepException(String stepName, Throwable cause) {
        // 异常消息包含步骤名称，以便在日志中可以立即看到。
        super("在 Promise 步骤 '" + stepName + "' 中发生错误", cause);
        this.stepName = stepName;
    }

    /**
     * 获取异常发生时的步骤名称。
     *
     * @return 步骤名称。
     */
    public String getStepName() {
        return stepName;
    }
}
